//
//  DateUtils.h
//  Calendar
//
//  Created by 曾玮 on 14/12/11.
//
//

#ifndef __Calendar__DateUtils__
#define __Calendar__DateUtils__

#include "Date.h"
#include <string>
using namespace std;

Date getTodayDate();
bool isLeapYear(int year);
inline int daysInYear(int year) { return isLeapYear(year) ? 366 : 365; }
int daysInMon(int year, int mon);

void nextDate(Date& date);
void prevDate(Date& date);
void shiftDate(Date& date, int days);
void shiftMonth(Date& date, int months);
int daysElapsed(const Date& from, const Date& to);
int getWeekDay(const Date& date);

//int date4SolarTerm(int y, int n);
//int solarTerm4Date(const Date& date, bool& firstDay);
//const char* getSolarTermName(int index);

int getYearSB(const Date& date);
int getMonSB(const Date& date);
int getDaySB(const Date& date);
int getHourSB(const Date& date,int hour);

const char* getSBName(int sbIndex);

LunarDate solar2Lunar(const Date& date);
const char* getLunarDateName(const LunarDate& date);
string getLunarDateNameNew(const LunarDate& date);
void getLunarDateNameMD(const LunarDate& date, char* buf, int len);

//计算所求日期到1899年12月22日相差多少天
int DaysBetween2Date(int year2, int month2, int day2);

int getBitInt(int data, int length, int shift);
long solarToInt(int year, int month, int day);

#endif /* defined(__Calendar__DateUtils__) */
